package com.sisgesbyte.services.localizacion;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.localizacion.LocalizacionCiudadDao;
import com.sisgesbyte.data.entity.localizacion.CiudadEntity;
import com.sisgesbyte.services.localizacion.bean.CiudadBean;
import com.sisgesbyte.services.localizacion.bean.ListaCiudadResponse;

@Stateless
public class MantenimientoCiudadImpl implements MantenimientoCiudad {

	@EJB
	private LocalizacionCiudadDao localizacionCiudadDao;
	@Inject
	private Validaciones validaciones;
	
	
	@Override
	public ListaCiudadResponse listarCiudades(String codTransaccion,FiltrosSQLBean cadenaFiltros) {
		String mensajeTransaccionMetodo = "[listarCiudades idTx=" + codTransaccion + "] - ";
		ListaCiudadResponse response = new ListaCiudadResponse();
		List<CiudadEntity> reqDivision = null;
		
		try{
			response.setIdTransaccion(codTransaccion);
			try{
				reqDivision = localizacionCiudadDao.listaCiudad(cadenaFiltros);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar de  BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_COD_IDT65);
				response.setMensajeRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_MSJ_IDT65);
				return response;
			}
			
			if(reqDivision.size()> 0){
				List<CiudadBean> listCiudad = new ArrayList<CiudadBean>();
				for(CiudadEntity lista :reqDivision){
					CiudadBean bean = new CiudadBean();
					bean.setActive(lista.getActive());
					bean.setCapital(lista.getCapital());
					bean.setCiudad(validaciones.validarCamposString(lista.getCiudad()));
					bean.setCodCiudad(validaciones.validarCamposString(lista.getCod_ciudad()));
					bean.setCodDivision(lista.getDivision_id());
					bean.setCodigo(lista.getId());
					bean.setCodMap(validaciones.validarCamposString(lista.getCod_map()));
					bean.setDivision(validaciones.validarCamposString(lista.getDivision()));
					bean.setLatMap(lista.getLat_map());
					bean.setLngMap(lista.getLng_map());
					bean.setZoom(lista.getZoom_default());
					listCiudad.add(bean);
				}
				response.setListaCiudades(listCiudad);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_COD_IDF64);
				response.setMensajeRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_MSJ_IDF64);
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_COD_IDT65);
			response.setMensajeRespuesta(ConstantesInternasSistema.CIUDAD_LISTAR_MSJ_IDT65);
			return response;
		}
		return response;
	}

}
